const util = require('../../utils/util');
const FileService = require('../../service/system/upload.service');

async function upload(ctx) {
  try {
    const file = ctx.request.files.file;
    const { dirTag = 'default' } = ctx.request.body;
    const createId = util.decodeToken(ctx);
    if (!file) return util.fail(ctx, '上传文件不能为空');
    const result = await FileService.uploadFile(file, dirTag, createId.userId);
    util.success(ctx, result);
  } catch (err) {
    console.error('上传错误:', err);
    if (err.code === 'LIMIT_FILE_SIZE') {
      return util.fail(ctx, '文件大小超过 200M 限制');
    }
    return util.fail(ctx, err);
  }
}

// 删除文件
async function deleteFile(ctx) {
  try {
    const { id, url } = ctx.request.body;
    const result = await FileService.deleteFile(id, url);
    util.success(ctx, result);
  } catch (err) {
    return util.fail(ctx, err.message || '删除文件失败');
  }
}

// 文件列表
// 查询文件列表
async function list(ctx) {
  const { filename, current = 1, limit = 10 } = ctx.request.query;

  try {
    const result = await FileService.listFiles({
      filename: filename ? String(filename) : null,
      current,
      limit
    });
    util.success(ctx, result);
  } catch (error) {
    util.fail(ctx, `查询文件列表失败: ${error.message}`);
  }
}

module.exports = {
  upload,
  deleteFile,
  list
};
